package com.ww.java8.datetime;

import java.time.DayOfWeek;
import java.time.LocalDate;

import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;
import static java.time.temporal.TemporalAdjusters.nextOrSame;

/**
 * 工厂方法
 * dayOfWeekInMonth：创建一个新的日期，它的值为同一个月中每一周的第几天
 * firstDayOfMonth：创建一个新的日期，它的值为当月的第一天
 * firstDayOfNextMonth：下月的第一天
 * firstDayOfYear：今年第一天
 * firstDayOfNextYear：明年第一天
 *
 * @author wanggw
 * @date 2024-02-23 23:27:52
 */
public class TemporalAdjusterDemo {

    public static void main(String[] args) {
//        date1: 2024-02-23
//        date2: 2024-02-25
//        date3: 2024-02-29

        LocalDate date1 = LocalDate.of(2024, 2, 23);
        System.out.println("date1: " + date1);
        // 未来最近一个周日
        LocalDate date2 = date1.with(nextOrSame(DayOfWeek.SUNDAY));
        System.out.println("date2: " + date2);
        // 月末
        LocalDate date3 = date2.with(lastDayOfMonth());
        System.out.println("date3: " + date3);
    }
}
